﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using vudu.ClasesDominio;
using vudu.Logica.Excepciones;
using vudu.Logica.Fachada;
using vudu.Presentacion.Contrato;
using vudu.Presentacion.Contrato.VU_13_Gestionar_Horarios;

namespace vudu.Presentacion.Presentador.VU_13_Gestionar_Horarios
{
    public class PresentadorModificarPrematricula
    {
        #region  Variables
        private IContratoModificarPrematricula _vista;
        private EnlaceLogico _fachada = new EnlaceLogico();
        private List<Prematricula> _misPrematriculas = new List<Prematricula>();
        private const string CabeceraError = "Operacion Fallida: ";
        #endregion

        #region constructor
        public PresentadorModificarPrematricula(IContratoModificarPrematricula vista, EnlaceLogico fachada)
        {
            _vista = vista;
            _fachada = fachada; 
            Estudiante estudiante = new Estudiante();
            estudiante = (Estudiante)_fachada.RolActual;
            _vista.UxInformacionEstudiante.Text = estudiante.Nombre + " " + estudiante.Apellido;
            PageLoad(estudiante);
        }
        #endregion

        //Metodo que simula el pageload.
        public void PageLoad(Estudiante estudiante)
        {
            try
            {
                _misPrematriculas = _fachada.ConsultarPrematriculas(estudiante);
                CargarTabla();
            }
            catch (ConsultaPrematriculasException e)
            {
                _vista.UxMensajeTransaccion.Text = CabeceraError + e.Message;
                _vista.UxMensajeTransaccion.Visible = true;
            }
            catch (ConexionExeption e)
            {
                _vista.UxMensajeTransaccion.Text = CabeceraError + e.Message;
                _vista.UxMensajeTransaccion.Visible = true;
            }
            finally
            {
                _vista.UxMensajeTransaccion.CssClass = "transaccionFallida";
            }
        }

        //Metodo que permite cargar la informacion de las prematriculas en el GridView
        public void CargarTabla()
        {
            DataTable tabla = new DataTable();
            tabla.Columns.Add("Fecha", typeof(string));
            tabla.Columns.Add("Nombre Prematricula", typeof(string));
            foreach (Prematricula prematricula in _misPrematriculas)
            {
                if (prematricula != null)
                {
                    tabla.Rows.Add(prematricula.Fecha.ToString().Split(' ')[0], prematricula.Nombre);
                }
            }
            _vista.UxListasPrematriculas.DataSource = tabla;
            _vista.UxListasPrematriculas.DataBind();
        }

        //Metodo que se ejecuta al seleccionar la accion de modificar.
        public Prematricula SeleccionModificar()
        {
            int x = (_vista.UxListasPrematriculas.PageIndex * 8) + _vista.UxListasPrematriculas.SelectedIndex;
            return (_misPrematriculas.ElementAt(x));
        }
    }
}